package model

import (
	"time"
)

// UserPreference 用户配置模型
// 对应数据库表: user_preferences
// 注意: 当前版本为单用户系统,UserID 固定为 1
type UserPreference struct {
	// ==================== 主键 ====================
	ID int64 `gorm:"primaryKey;autoIncrement" json:"id"`

	// ==================== 用户标识 ====================
	// UserID 用户ID (暂时固定为 1,预留多用户支持)
	UserID int64 `gorm:"default:1;uniqueIndex:uk_user_id;column:user_id" json:"user_id"`

	// ==================== 显示设置 ====================
	// Theme 主题 (light / dark)
	Theme string `gorm:"type:varchar(20);default:light" json:"theme"`

	// ArticlesPerPage 每页文章数 (默认 20)
	ArticlesPerPage int `gorm:"default:20;column:articles_per_page" json:"articles_per_page"`

	// DefaultView 默认视图 (all / unread / starred)
	DefaultView string `gorm:"type:varchar(20);default:unread;column:default_view" json:"default_view"`

	// ==================== AI 设置 ====================
	// EnableAISummary 是否启用 AI 摘要 (默认 true)
	EnableAISummary bool `gorm:"default:true;column:enable_ai_summary" json:"enable_ai_summary"`

	// AISummaryLanguage AI 摘要语言 (zh / en)
	AISummaryLanguage string `gorm:"type:varchar(10);default:zh;column:ai_summary_language" json:"ai_summary_language"`

	// ==================== 抓取设置 ====================
	// DefaultFetchInterval 默认抓取间隔(秒) 默认 3600 (1小时)
	DefaultFetchInterval int `gorm:"default:3600;column:default_fetch_interval" json:"default_fetch_interval"`

	// ==================== 时间戳 ====================
	CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
	UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
}

// TableName 指定表名
func (UserPreference) TableName() string {
	return "user_preferences"
}

// ==================== 业务方法 ====================

// IsDarkMode 判断是否为深色模式
func (u *UserPreference) IsDarkMode() bool {
	return u.Theme == "dark"
}

// SetTheme 设置主题
func (u *UserPreference) SetTheme(theme string) {
	if theme == "light" || theme == "dark" {
		u.Theme = theme
	}
}

// SetDefaultView 设置默认视图
func (u *UserPreference) SetDefaultView(view string) {
	if view == "all" || view == "unread" || view == "starred" {
		u.DefaultView = view
	}
}

// ToggleAISummary 切换 AI 摘要开关
func (u *UserPreference) ToggleAISummary() {
	u.EnableAISummary = !u.EnableAISummary
}
